home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c++-part2 / 15306 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  30.8 KB

  1. Path: morgan.com!usenet
  2. From: Chris Laffra <laffra@ms.com>
  3. Newsgroups: comp.lang.java,comp.lang.c++
  4. Subject: FREE: C++ to Java translator (fix in uuencoded text)
  5. Date: Thu, 04 Apr 1996 13:59:20 -0500
  6. Organization: Morgan Stanley
  7. Message-ID: <31641C08.2039@ms.com>
  8. NNTP-Posting-Host: cal.morgan.com
  9. Mime-Version: 1.0
  10. Content-Type: text/plain; charset=us-ascii
  11. Content-Transfer-Encoding: 7bit
  12. X-Mailer: Mozilla 2.0 (X11; I; SunOS 5.4 sun4m)
  13.  
  14. [The previous posting had a corrupted uuencode file]
  15.  
  16. c2j is a C++ to Java translator that translates C++ code to Java code.
  17. The parser is written in C++, because I wrote it before I ever heard of
  18. Java...
  19. The input to c2j must consist of:
  20.  
  21.    - one .H file, containing one or more C++ class definitions.
  22.    - one .C file, containing all method bodies referenced in the .H
  23. file.
  24.  
  25. c2j is basically a shell-script that calls sed, a C++-to-Java
  26. translator,
  27. and the C pre-processor to do all the weaving of moving methods into one
  28. Java class definition.
  29.  
  30. This parser currently uses a shell script and a Unix utility called
  31. "sed".
  32. When you have access to Unix utilities on a Windows PC (like the MKS
  33. toolkit), the parser could also be used. However, that setup has not
  34. been
  35. tested, as I did not have a strong incentive to do this because we have
  36. plenty Unix machines available at Morgan Stanley.
  37.  
  38. It should be pretty simple to make this thing work on DOS-only tools.
  39. If someone does this, please let me know.
  40.  
  41. Different problems that are tackled by this parser:
  42.  
  43.    - C++ can have a header file with a class declaration and a member
  44.      function given in another file (typically a .C or .cpp file),
  45.      Java has all the methods "inlined" in the class definition.
  46.  
  47.    - Data types are incompatible (unsigned versus int, for instance)
  48.  
  49.    - Pointer references (->) need to be translated into refs (.)
  50.  
  51.    - Access (public,protected,private) is done by region in C++, and
  52.      is per method in Java.
  53.  
  54.    - Print statements to cerr and cout, which are to be translated into
  55.      calls to System.out.print, and System.err.print.
  56.  
  57.    - Statements with "delete object;" need to be translated into
  58.      "object = null;" to render a similar effect. Note that these
  59.      assignments are not necessary at all in a destructor, as we will
  60.      lose the reference to the object automatically.
  61.  
  62.    - Overloaded operators in a class definition are meaningless in Java.
  63.  
  64.    - C++ has multiple inheritance. Java has single inheritance and
  65.      interfaces. In the case of multiple inheritance, we need to make
  66.      a decision.
  67.  
  68. Still to be done:
  69.  
  70.    - Variable declarations on the stack are not recognized and handled.
  71.  
  72.    - Overloaded operators in the code.
  73.  
  74.    - Templates.
  75.  
  76.    - Global variables are collected and put into the first class found
  77.      in the .H file. Something goes wrong during collection or writing,
  78.      and this class might not be the right location after all.
  79.  
  80.    - Sometimes the parser has problems with method parameters
  81.      (especially with constructors). Keep the .H and .C file handy...
  82.  
  83.    - Documentation (no time...)
  84.  
  85.  
  86. C2j translates roughly about 85-95 percent of the code correctly. It
  87. saves
  88. me a lot of editing time (inlining all methods, translating simple
  89. types,
  90. removing &'s everywhere, changing -> into ., etc.
  91. Just run it and see what it does for you...
  92.  
  93. We have decided to put this parser in the public domain. Use it at your
  94. own risk, and if you make any changes (especially improvements), tell
  95. us!
  96. We hope that this utility is useful for you and the rest of the C++/Java
  97. community.
  98.  
  99. Sorry for sending code like this, but we do not have a publicly
  100. accessible
  101. site for depositing source code.
  102.  
  103. Chris Laffra
  104. -------------------------------------------------------------------
  105. Morgan Stanley, 750 Seventh Avenue (between 49 & 50), NYC, NY 10019
  106. Email: laffra@ms.com,   Tel: (212) 762 2223,    Fax: (212) 762 0520
  107. -------------------------------------------------------------------
  108.  
  109. Save this posting in a file, and run uudecode on that file,
  110. then execute:
  111.  
  112.         uncompress c2j.tar.Z
  113.         tar xvf c2j.tar
  114.         cd c2j
  115.         make
  116.  
  117. The makefile uses the Lucid compiler, replace it with any other
  118. C++ compiler you use.
  119.  
  120. ===============================================
  121.  
  122. begin 664 c2j.tar.Z
  123. M'YV08V2H>0&@H,&#"!,J7,BPH<.'$!'"@$$#QHT;-0!,A"'C1HP;&C?&H$$CM
  124. MY,:3$S7:B#'#HHT:'T%.C"%C1@V0&2/JW,FSI\\Z<^B$D1.231@S9N2$\:FPM
  125. MS1LY9\*X89H094JK,:AJW<JUJ]>O 0<V";.FC)DT;,I\7<OV((P8$VV0--GQM
  126. MH\FW<ZURM"E#)4N7-6;,D(GW;5\8;1,K5@A4*-&)1I$J]>H4JE2O>N_.7,RYM
  127. ML^>V(T*+'DVZM.G3J%.K7JU@1&L0(,+"GDT;1 X;+RCFIC%["!HY:>: 8'(TM
  128. M:9C6KT$,>0,G#_ S:.B 0#$F!8@8.7+4:(']-H@F3Z.Z 3%%J)NT>4"84/[&M
  129. M!0L02=R,<0$B"!LV(*2D@4Y'N)0R<Y0AAQUED.$"<B/ !H6 ;00W1QIOC$?'M
  130. M&R  5<9[8S"7QWM.D9&&&1N"(!49('@8%'!BU$%'&2#0@49P(,SQAAETW#%4M
  131. M&<F-"$(:_97XQAAUM%&&&T+1 >%X9CP%@A-/.-'"$$\TT4014@R11!!,@ !'M
  132. M'7+ \4: PNEX!X]HO*%B<F:4P2*,: A8AACIG:$4D05J*<<;=J1!1ITNAB&=M
  133. MBS!FV-QST8'@QAM&CH%C@B+" 4<90PF7QGAAW!<;<VD 2!\4:841X*5$AC&&M
  134. M=&6T$09:.H 0F7% M#&'"QFV@::29G#IHH"7#KI?H3JRD8:B;CSHQAD[NI&DM
  135. M'*8:&>&!KC':Q!-2'!&$$^11,2T3163Q71!+%#'%DD_D5P044GA;A!/64I%$M
  136. MD]]""\(504@AQ;3J>EN?$$]4004(5"!1!'E5)&&M$$DP(7 6R3UA!+]()/'MM
  137. M% I3 6^Y[Q4AL+]2@% $%N1ZVV[&230!A<%%$/%>$DX,P4051*!\! A"Z ONM
  138. MO@8W(7#)R5$1;K__ACQR$B6_&^^\Z +=[L)35HD$O4$0;# 56;QGA,!.> R"M
  139. M$>X&D1P4\:H[1!5,Q L"%%5( <434Q3QGKM,.HFR$5*X7,24Z-+W;+335GMMM
  140. MMN0MS4263.XKQ+\&-XUM<EAG/*VV1 311!!'V#M%%48806700FAK\!#GIOUOM
  141. M$-\&(>[D3.RK, A53.'R>\^V;$06+H, ;7(M3T%%W#&KZ\3+_3I,7L03_^NNM
  142. MP-\206425@2AKA7>,KMUIY_*81:N$[;8IKA!$#$E"&>EY?QJX(<O_OBG(=@BM
  143. M@"N2.*:+P]4QAIZ7M@$'6KA&R$:(<Y19!QOJ/[4&".M#@XC<D!Y$M4D.UC,3M
  144. M=%S 0 21[X$0C*!H%*  .$1*0*FRH!P") <7#$$!"6##&,8 @A902(,<+"&QM
  145. M4"@@#X)0-BR4@P(^0\,:VO"&.+QA6%Y0KNQ-*8= -,A;XI*7B=2%,#,IXDG@M
  146. M$H.5^*4E-WA)2P[SEAG(P"Z(":(6%]*8H12E.)/I2F7$@QFK:.8M6TRC&KDBM
  147. MP3:Z4344#,M[;(,;W5!DCKX!CG"((YGC*& YNN+/=*ISG>QLISLV^$YXI$(>M
  148. M\Z!'/>QQ#WSD0Q_[X$<__/$/@ 1$( -1<$'(<M"16D0A"V%(0QQZ@X= ]!X=M
  149. MF8@.*%(1BP E'!G1R$;24X".>"0<,OPH2$,JTBB/!2XG04E*5+(2EK3$)2^!M
  150. M:8#J(Y.9Z*" -*U). =\4YSFE#X[X4E/?$*#GZP7* T12CJ'2A2.PN H2&VPM
  151. M6"*RE* R]:JQ08]%&0K5J$!0JE.Q(56K4DJK7A6K:M+*5@?,E7-V)9U>_6I(M
  152. MPB+6I(Z5K",=2 %WDQ:U;+<W;3VN6]]BDK@ZEC9T*6]=3OB8T.1%+Z/=*U_[M
  153. MXAG !-:T@AU, :?KW<. %R^U:>QB5-(8Q\HU!97ZC&0F@T_*5M:RW<%,9H$;M
  154. M3LAN1@0%Z(QA/1,94E=*M'H=[3O)7)I)G78PJ5'-:HFKCP*X)@6O@4UL9#,;M
  155. MVGS*MB:UX&UQV]W<SD4%NT%+HWIS K:T-06_ >X)@B/<E81PN+0N#@2->USDM
  156. M'D8YRY6+"##37!(XE](B?"YTHP.;Z1:6NM5]YPFN@YU39U>[VR4A=['3Z>^,M
  157. M(+&>R@YD5"C>\9*WO.91\(W #6YHXBB0'85).2M8 2E!H(0PV"$,+9K3'(PRM
  158. M(03VZ4_2I2Z D*O<#.UIN<U][J7V=" J7&]26Y).&QH#J@<%!00ST@$%9],"M
  159. M^+J!12Y  O?H=\I036I2Q(H0BY14&18-(;FQ,<H<>FF6_RHK6 >BKWWQ.X3]M
  160. MIJ6_0OGOL.*)'R&Y2)4@$(,JZ0D"Z:5)>O*ITZ2LAU_]=J\,%Y4-C,3@J5]5M
  161. MZGXBBE&;[M.".8P!.'#XDSBE,X8;U[) K>1N"R;4@O!"%Y92F:Z?GL("7;J!M
  162. M1+=2CIW*T (XW$E1"U92]7S)818#$%)YVO",0."4-!/+PV4B@Z2(1"$!*\#)M
  163. M"?84@\_B!AY9E(+FA5$,8\,E%-,!QQ8Z;O[*8"D? [FA5\YQ%?J,APH9R5=TM
  164. M2$^1[U,G$02(#"(XT!7:-)X\F D$XB20B$8((.%4;])IJ+2*T.+G[48HQU>8M
  165. ME"_O(!PH5!@%OBJ+F9NPA"DH8$)O8,,:>)2"]V1YT!G:'XDJ):,0L\A"!@(!M
  166. M$MYPAS(02 [.'G*,RD"'.L !U9XR%**L/:1CHP_)(A).$DH$OW2B6]70/5&$M
  167. M))IB(J5!U6.F$"VM760+G?G>.()#6HB4'EA7VE1C>-%]P_1<M(1!#&D1D73 M
  168. M8YGQE$<JZ+EH$J23/S/QS]I;ID.F8Y0&^66\>J82]L !M>$[^,^^D$6;"<^3M
  169. M'F2SH9X*2((98O0&(0G81]NEY7L4#JE/I46]+%K#H>YP4040X4,G#J8W,5XJM
  170. M5XO[1BT2U1K20B(XD5,X,92O B1\X.XR,M4L@FZ;PK G!+X8@&3*\1@4S."]M
  171. M#\5/H]01=(74!C$(:.VTJ95\'@R",_Q[2/"4B@%Q=7<49'I^F\8Q=#T(7P3"M
  172. MRE$6+D.S$3\;/(LS3);*,IQ5*1P13,I7]P4U/+/L]P67J,%]?C!]Y@N;^A+!M
  173. M3T_.PZ/")+UBQ<J"1N+Z=.H0K/W$'@3?G@-0BD6']Q!S4D&1BJ)2P/L2CNT-M
  174. MDUH1 DWLIA0+!P4M\(%U[LLG"AD^NE'6+HG"3R$3G]\%W"=]?8/ :MNC8$L8M
  175. M]RLLX&6(4@:C@F1>]F]^(GK&Y2/W%6+I(3V.=VLKUG:M=&6D!QN"ABNK-W_CM
  176. MX607)6%0 !Q$$B-%4BK!Y&H4HBAR@$ Z$FW5!T O$G$B4GS5\WY0%BSR1WT4M
  177. MDH&Q863+-05Y$!2EX@+3Y ()2"072")"2(1MX ("TD%)2 <AV'N-M(!"0B3"M
  178. M$4 @( )[\G0#)@9J8(!TL ,B8"AJ@F7N-TO9M8 >."$^* )O((9D" (]8"C[M
  179. MPP9FN%PH5G<Y]B -8A0(9!9I,BKTX00%:#WC="N?XH-ZYGQ9V"-@9V_W!69SM
  180. M,!3I,4XW%GFW=R+N4UVMM(4L,B;WX8-L\"6S=#WDAV**LEQ9-H=CN$]AH")%M
  181. M!WB9EP=5Z'U/\&VG2'=UPAP",F7OM&+057M[YF"!5WQ"(A4 EA:VMV(@Z(/ZM
  182. MQUWH)ASKQ09&PG3%<D \HGTPQES.)7?I%E$9-RG<:!ZM."(^&'X"8@:BHBF3M
  183. M9&9%]BEK=HW96(YN<([>^![=AH;MQV9D@2.U 5U[\CX/LBP45!YH@1\WR"*^M
  184. M=%]J)V%6,!1I<'$95Y"""'@1(ARWEF79-P;_,XGK)CT9<@9]I@=UHB/B=&5DM
  185. MEXOUM8L"THM[0B+ J!35-6?RJ$K?V'WU106EHG +^"H\"0)'<(HTAA_/!1P6M
  186. MN5U@ER&<=H#3%FGIQ8-F=A8;1&1\QSUF@H&UL6)9EE^A1Q]34'3D)G'$<@9OM
  187. ML%UW<"<;1@9< F"7\I2,IR1KZ6?#4F4#&6D#9XQLQE#J)ATXJ(I^>8I%QGA'M
  188. M(7X<YI+D099&(B1>QR*#=GI;EQ:N@G?LTX%:\G<>)B#G!R"/\CXWE@<^R(7YM
  189. MY(FC\A0I0!]+H";G]I7ZI2.<=W<K20:XV$#32 2_%(D:.1XH<"@MTG(PQD#YM
  190. M-W+PIX-!66(*A ::)V(J @(XL!W:H24" BS2L6:TIY.7TH)D>#_T09R72"!SM
  191. MH !"DF.G6)U#5R!V22R-R2(H\'H:1BR;V(%SX&QM:"0;!HC:>'D 4F72TV9PM
  192. M:0(G(!S>)B!Y< ?9A"$KZ7@;EGY4*4GD-A\@<&?L)0?,MR.01B(!,HKBQB-(M
  193. M)QS$9&IUP$ 7=04L G>W]SXSN5Q3.7"#YI77 X"^0D*^9"J30A]5\"D<.DX@M
  194. M*D/<-AYZM 9+N"-#!Z( *6Q2H6D)NETHX)D&6)'WD1XM1X $$HEST&SG8RE M
  195. M$0(41**H!HR**&0P,FN8!J7"82&U@A\?>FHZDF72\U[6>3U.I@"QLEZYAXL4M
  196. ME$<PPD?&H0 MT*=^^J> &JB".JB$6JB&V@(8M4@>YTAE$"(8 0/D,:!$(D!!M
  197. M0"!N4 ?L:7@UHB;C00,Y $DU  -6Z@19, 3O0:K7,1,YH !%0*/_I"I@% 8#M
  198. M!2M%-T?\PFBI@@)7) /6$44R  (R$*PS8*M7$P9XD*N[VJLV\*LP4 ,R  -\M
  199. M>JC2.JW4>J@SM$;8FJW:NJW<VJU@(1 O$!;>ZAE#9!$UD!$;<41W,1(EH1=RM
  200. M<:Y/!!@S0 .$01-1)!/CBD-=]!@P$%!+(4:*6D8H<499D:\&FT8C$ (O( :3M
  201. M\@+YTQK"%;%M%*$)DARR41NPD0"WL1N[T1N_D:>Q^AK) 4@+)4C481W=<4C9M
  202. MD4@<)QY7>!Z-"DG+(4GQ :&6E!\,I4D<U$G,0K$*PB"BU)&E%""GU!RIM$HAM
  203. MXDK! 4MID"(K<G9$=TLWDB.1QDL^ B2ZR7C$U#9/$B5)HTQ9LB5=@HIA$FD!M
  204. M-$UHHB8-F$UF)R=2T4U2"DY8)FY[:4Y^F4X/E2/M%"F1)T^8 H^<TG3X%"%"M
  205. ML4_]A"JPVD>S6E",0DRU(@>W@D""4K*\$FDQ"E%P.5%/45$(6;'.\E=YPU&"M
  206. MQ3<?92\B52XDQ5<GQ2ZWQ54M92]- U-8-5,#8U-0X[.RLS"R!3&T%3P5 U09M
  207. MLS$D951:!31)A3(JPS*QDSLS(U4V0P4XPRA7)5-'9;RN6S3V<CI?*U:U^S11M
  208. M<S5G5517DS5;TS6;]589$U=GDS9KDS%<BU=R0S=]=5IXLU'6,KJ$95C-.SA2M
  209. M93C_@CA9@ZJ1!3F24UF7@UF9(U6<Y3GU 5I$)5JYBSJJLSNL@UI)\#JQ,SN,M
  210. MTEJXHR^QU3 [U;NV-3RY!5F[=5+,,P4]^SR"6V+38UT"=ST]I#W_\F(KG""!M
  211. M5DL[AA^.E@9!YL)Q4 =IT*:I(K*, AL>(@=N$ 9"\AZ?%J0C-!W==@+%9S_IM
  212. M 11PF645YF5<1H"6B)I&++%B_$ 1J@!" #HEDP12T -@D,1+/)XD  -@0$% M
  213. M$09G4 8H8!U[(*?CQ ,\< )%H# GP'MU?,>I(AO&^,8X@G@QQR+29X/B=G<\M
  214. MD,A,7 8^ )8Z,LE\I\B77&%E@ =+.WLOTDM#3(9/8:>P85XM%GHZ9G(DDD\9M
  215. M)B'7PY<8^7=S.72TQW?;1:0V4H)P"!LY*&4K0A]&@% ,\A074F:8*6(>LETEM
  216. M)VTHYRM$Z('\1";4<SV(A\E7]@)*$IOT<U&!; 0*T <4]"'G\UXDD" M4 9QM
  217. M  +0>BMND(&%C"-GH0#FO 4@$ (E1")?\ 5A\05J$([]# )=<&RDEH%ML 9)M
  218. M# +]_,\!_5S]7$UI0$'7YR,9B"PE-'0-+1  +=!?\ (JD('FO"+OU0)#1P)IM
  219. MD%\9",\1BK$&6"9=* (^R$\11R$B($<@8 6<.4HQX (P$ ;OL;%O\0(R4 ,RM
  220. M[=(UW84D>TZ#A+*&Q!TKJT@=][*/M!XS>S*4=-2U\=(V?;.8%!TZRTD%0A\RM
  221. M/=-<'=-FG=0BD,-16R--299;F'<$&1Q^!YP=I-6T<=8M,!XB<'4D0J320W=FM
  222. M9B)U+20N&&E%5FIJRFH_S",_,!UY\ )N8!UX/1N!32)X,-/SR"(D4&DKE@<JM
  223. M8!T[L ,@$-JP\<D<&@.D#2"BTGVS<=8B4-FGK=8H!)<O)AQ<( (HG5^Y#4T@M
  224. MD-N[/02Y+=LT#=.Q[=JPX1H8FR!99I7O94&V1XKX0:&44B)2<<=W,GV?%B,_M
  225. MYL,QF&X<&LS:-=,)LHD_ B3::7[P-70BP'P/8I(%<H;TUX7A=X;7%RSHF,RZM
  226. M5@:/<F7!1-[K;6:$N9OTP=8P EU!_"O_(TX@Z<3Z<W+LZ+9/.]\Q%&&UH=P7M
  227. MGIFV=W3272P<)!TC,"E[5P??E7TK0J5:.8BB(D"86<O20P8 [J(L\M#%R'?TM
  228. M400K7BRP5R=MQV9E"6))PGS4[)JA%^.UY%PJ)LLLLM%JT-$0_07T1I+5A<H7M
  229. M/M/;;=(@0 )GG#8M(P4.BYYN *F[K5]\D.5;GL9>/F@@X ,,[<\<3>/]_ *[M
  230. MK0;(#0(83AL) MVN9G-X9RE[LB*&F^,]CIDR#@+>?&&^_9UK0DW++<I+[N9-M
  231. M#N=0GL2F+ =4CN=67B=8KN5HW.5?[B%AGN4I76%ESNE<KL8O,&A/LN8@\ )[M
  232. M8@>2G8=U?N>SP=S7L\72X\6MIB3H5P36T>%MFFSXEGK7$^+RP08D7@8!"DT M
  233. MSF>A>69(SD_?E@<TIYYO<,>1:^%X_AUA$"=#$HQ/&X5/(1S!QB(W+17VQF<>M
  234. M..+?=7<BZ@+$3>O)/6Z@'@.@$LNU1);\A =05F+[LUWWO2?^MF%9QLP%A,MMM
  235. M N"$9WAVQWRC<B3SF>(>GM_:7NLM71M1W +_PN1.'@9Q/N? Z@,<+^GA.A_3M
  236. M! )ES@4@E  L?^4G?>:>_FF38N]L/N?A6,88Z_)FWNFH+O-N\*LC[]$E;X1GM
  237. MDM9E8O0V'1:I$A\4M9N5<LB!W4TO=H8V_UQ(GX&,%B S/<]F#<J,/AOU_)"+M
  238. M?'?/?'*P?"I*GF>VY^*[&>"YK&>[?&J]_"=O@'CBO8#$;,S(@LRM9"G+/&+.M
  239. M_.!EQR+2W$TK5@;6;%W8#!O:3 ;<['D59L,4%,[C7,ZXC#Y9KL[L[,X&W6ZTM
  240. MP?7U_"$[5.%#<+!?4:YRT:Y&Y!%(A!>J?Q(V\!(V(!,K 452!!,AP1(7@1A9M
  241. M9/J>L:]?U$>4$;!=D1E8X?O(?T,@#;%CW/S@8SZQ45P8.QM"30,="QMXND<AM
  242. MVRS8;[<F2T@I"]7>T;*,]'$PFQY6W1Y8;;.6\M4]\A\[.];0#TH-LF"C5#VFM
  243. MI%!'^R%)&VFO%$M/:^#8$K>62QC%+ND1O@1K!9.VM[7LRC'Y6E<B;#43LN7;M
  244. MSM:9:%QJBTVXB;;%3>I$W$I1UP5J32ZFAK<4A=YZ%'R+&/FM^0&X[LF]$Q6DM
  245. MPE4!E%BUN(K.K&AXD"NAC$"_Y%" 140I%DU/]T"_C!*Z[M=@V18@!5R,%**BM
  246. MNM0%ZW(7$Z.KN)38)3-DRN2@*60%:B0,W07"9DMMH1@_A6<$KZ%B-89'\2H9M
  247. M)V.I*"^GPKRB2LV@*CEC9_@+^' &,4L4?%U?97LQC2SXO:8&%:@:XLNQE*^VM
  248. M<K["1OHJ&^N+KK@ONP*_](K\\BOU*[ <P<*")0Y+8NE?C*4( ##%(< <!P&CM
  249. M+)7C@&46!=8Y/$L#JP^AI71$L-)"P4Y+:LE@4H!V. S7 EN<RN[B*>6B=1$/M
  250. M$Q8W> OR\"W-POD)P]2@ %3 "Z @+R 9*L-ER R;H3-<AK-A"JBM&;8][DZKM
  251. M>X;8\!G^%A&'[+X+#S #)P)2/"$TX -: S=,=B" !T"(<,C$7  Y-(?'#AWRM
  252. M@!,!8-QA.31V[(Y%3#+]9 _A83Y,AT&!#/@*,= /_6$W-'<5#@F4M=)$9,0)M
  253. M E$!7&,(+ $"=H=$P%@2$E! [-BQ,B "=D "2(:Q(4E!K>JQHS(32-J(AJ*2M
  254. MR:F-U!"'0FD+ OH""4"+.]2%+F(9$ *J) ]TQ(_X D+B=4M%,((DF@D$HLA6M
  255. M(G[SB0_QF' -4E41;>)RD!]':B>"Q(CS$T<BA2B)Q^=(E;,2M"=2!+&X0S!@M
  256. M!\01AUC:R 9CV2QVJ O!J%_1A4B;G"*+$+$7*H]_41$3T'-Y6ATQ0E'%AT@NM
  257. M$$L1& +0"[-4Q+SX%EVB"A 57PR!W*&^"+T 8\D0B_:L!#$3.D!C0%):#(LLM
  258. M#R1FJ,9#;GS#4,ACA1&!I)?*N ;\&5D$BQZ1)XX;%H'M/*,< (WA!S;L.-]TM
  259. M&5,C2*0]A4;K[#@\5'@.3VQD(5] /M7&S-@3"9#;:@,_B--$$_9Q I[$"0 !M
  260. M/T !S AVB!RG27JQC3UQ*,(7%9%>I",XA"7BT 39HCF '<^'_'@*F(B5$9.@M
  261. M\!3@TADP2I4"^D2*T%@L_$RE2 ,H20YL@6=% W! %RB/#)%"G28$@HSN(TI2M
  262. M%:$,V.P;?G(HZ@!T^ 'Y1P& 1'=$A!0?(SD18T!^H( Y$ -8P!S@5?*%(2+%M
  263. MTO8%Z$"'))%T0 :(Q1&P)_B,(P./<6!#GL@/:1VF0XF, 3V 0[* $BD#<J0,M
  264. MV)$F<@O @"[0 WH CQ2270 ZYC,,J2%OY KHD#SR25J'5"&J6D.+G!0O4HFQM
  265. M,QGIQ'C5= @!&Q)&<LD8P:M20/[9BYR1#KA&T+@'8 /B,6?_1T601CTVTT:CM
  266. MV*F-%X\V2(]RH\0F(VDTC4-!+,*&/G#QLMZ:&#HH( 2\#S< A69$'J.3M %-M
  267. MC@%!.1OV&,9:E"[ O9$;,]">OH0.T %S8-G  5Z3 BAEI%PQ/H#-3<J9!B=)M
  268. M2)$$ 2> "\B!$V =]B27& ^MT2'F,5,Y&^!D>R(2*8"$\ !WAO+*'*8L X[2M
  269. M3(* -FDK^V0X(VWD#&.U2CMTAV*E&Z"5"/*^'(KDPBNC9:]$E-9114#*VA NM
  270. MI8,?BPV\4@,A2E=9+;G M;0.Y3(=#LLS-!LZ8@;REK"A68Z'53DH^<G/81&6M
  271. MTK*1FUNI,10&I21GY$P!V 'P0R*83Z[\C)*2^P1,.VD9[Y!JNW@4LS2BR3NTM
  272. M*A-F; P.X(1(_$HBH\=<&)\<#\&A4ERJ-G"RBF5L*)(GX N< &A)018F_ B5M
  273. M/FP*6! PPR81CZ2DE&3&5:;)-5DJ91#]F X.8F?BL>H@VA"/P^R,NK(ZB,6$M
  274. M*2)C8\PP JI#"]#%5"4#:(!8K)HEZ'%@@2L +8@ 1Y&(67-K6I&O219MCAP@M
  275. M Q\')&T!L4DVI8#9M!9H,PEHS2ZP!:YFVOR/"I-AUD<Z< 6> MPL7&N@9\(&M
  276. M8C(R=T0/"(L[@@?0S;)Y-HN-WBP"I"T-))=?9SCCYAK8 FF ;P[)M!@K8<#,M
  277. MK'R!$WY,(<_9./=$D$$#$A/Q,,[8Z 9Z@.MT$:3-#?@ R.D&^I1UR$ P2%YVM
  278. M(2Y !\[0N1P/YU($$$_C.2S=YN$4.W,S"(Q-RHDW+:?6W&M)\EP."8$X-6NFM
  279. MX&R-?,<)5#(C<"?: .M$DRK &'T!139'8N/MA)T*(&!BR.9 '?C.^JQD<R2VM
  280. ME4K9R>MHI^WD;[C34$A.Z5DW[V80R)O7\WVV !5I*%9 #Y@!XY(VP,D3<5]BM
  281. MI//TG-%S>MK-RIDV6T!ODI)=X#V( !T@ JP#'^ #*R\!4- M>4$19P8MH!STM
  282. M<GI0-[ ">%4([4(D5%F"$#$0V-; P7R3B+(K.DCKL#H19V_:GXN3U[F!W.D#M
  283. MWF?N; $/E/OD/%A2F.JGGKF?30PVM%#H.3DW:/7LH&Z@"R!1$R0'JJCZ9)]:M
  284. MM'.ZT"YJ0!%H$6@![U.,=L_(*!VP7>%\F]0!+J8(,_ %WD-LW*,/ B5]@=@)M
  285. M&W F'-"9[V@.[$K>,SM+4.WDG3P D.+',@#E3,!Z4)0U"EERRJ))0U= !!52M
  286. MT\$-1-(Z  XGZ2 -,:3T"VR!,)H6'^9KW)\B#5'N457*2E_E"7@!V+)-LCSBM
  287. M&"-$9?R@4JP248I222I(K<,LW0+)I98.35TY1B6H+$VEJS1)VE)<JL=VJ6K,M
  288. M,K<4EZ8X63']?,2RG&G.-)2.TE):3%$I'T6F*T"9NM)%VDT)I8$ZFKUIG 92M
  289. M2JH>+NFQ3);UU)S2TBX0 GJ M:258C$!Z,LT>4?)  J8I>^!F%+29CH;\.5KM
  290. M^Y=Y\EM.AV-:2ZNE"LBEUO0V7H];>E&W*0AYIQDGGBK42FI/,VFR_*08B\P$M
  291. MS&ZJ+L7I2#6FT%2=0LW/R% QECM]$2%UF)+2>4I2\]D]W:3YE*+R4W]Z46MJM
  292. M5Q*F\M24PM1S*E/5)#,-J"WUH,94:5HMJ6F(Z:$!E9P)U('9)^VHX92J?#2AM
  293. M[E2EFBY!@$,];1!UI1[54+H[K</3=*J?D:+V*3D:40?EO8RE$W6J4DM8.0)RM
  294. M*0C(J#W1D&X971=F9,BE)(O\LC:HU!?22F?J*W6+"6!:VE(NP 7\JM!<IT7SM
  295. MLCK676E69]I-A:>8E%%JTCR63\= /_VG1G6@>E4\BE#-*4]EJ DSG(+5?;I7M
  296. M8^4)\*N %2G"0%S!$-]6>$JI%$*MRE:=2DX7JCY%ITV5: 94."E4:RMES:7@M
  297. M5***U+%:3H]I,I6FRY2FEM7AFE2K*S2]KHT5KC[6M9, SJI9-9HYM;O24TOJM
  298. M4TTJ4&6O0O6T5E: .M,HZI/$KJ7S=&*L@4I#5=M=Q:NS-9K65A& 6W>I9F1:M
  299. M&Z:W:J&9MEB[*9PDKJ_UN(+7.X19E^LS9:I4%58^5Y2Z5J=K<3VEUC6=8M<*M
  300. M&UVC*H15JA)6Q(97Y4I>S>MG3:\C-9^&UD;Y7M=#?/6G!-:HVM<8@%^Y@.DLM
  301. MJ_SU279+UP8G0P#(%'AT(,"&467)0R&%#S6P/7%[NKTW4!;BF5TUL6VU0@R+M
  302. MS2I76X <13P[ML?^6/Z)0!IG&GB<F7. :M V:CW?Z,74G)X4A,S//( "MJC<M
  303. M#)W\2(U"3\W)8\?HG*VS>O;.WM!9.D8'ZD\EK8\MG(& 5-%?YVAL-*0%57&*M
  304. MQT0Q(H^IW[R<@#-?<E5<26XB;6N]M%IS?WK,$J3N(BWZ=)XE\@U\ 75'2$$IM
  305. M"A"B9\ ZL" $DCQ+[5=EG@#$<*;:5:MKA&<)=9?V$C:@R3VZ'VN #<BTWE2MM
  306. MPLG5:E#WZ'LH:C; .KS*<%8K-ZT[.YCHE3VM4 NJ:R<$K[TR8M4,F$E*.5#]M
  307. M*Z$L8[%1W06!*X.;$!$=F *BTM3"153K;=4=@C*,#XD.? %#VFKA)*R5M5'(M
  308. MUZI;=OL&W"V\]6&1%M?26U6K[H1G"F5Y(H %X-I\NV]]:?), <"64@Y;4EILM
  309. MCRW0#*X EMF"U6=K;*7M':*V)I-@AD4 ^V]C0\!-GB+7.C"HX28\]ZBOI;D7M
  310. M-^,"V' 8(YVM ]*W_+;:GLQK>_%>K+:%)144T+[-76MOS>FX13SE=FJZ23K:M
  311. M2WW86* #$0? Y%'#N' KK@^[MP^QZ[+:^ E$IT/+G;6^UI!>W:P[+%" PNVVM
  312. MJE:PGLN'FP B[MM=NO6VUU[<9:ESA2U9)+;0%MDV6.DJ<GTNM#6Y!=,("%V5M
  313. MRRO][9L8HBZW!?E:C(5K;:[V9$F-%U'R7*5+!G:M(0VW9E+.BLJU:Y8XK^<5M
  314. ME7D6[S)<73-&C>YTV+:F-^^"6Z<[1AVO5P2XDC=Y]@%<NSWU$-2UMN;63:+/M
  315. M)E J&!X5$#YE0'PZIBV 70.F")A(2HGK1-PN5 16YO05 4&@!76[ZTM\/PRHM
  316. M$:'Q8<>1@>X;9Z8OXA$!RP&_"<CJ<GW#+Y8D ^G7-+'?]W!^B0#Z6+]/H?V>M
  317. MA_=K?^5O_J6_L,$B"I,Q0'Y5R?7].(G"_<:> @QJQAEDS(C(@@DL+17@PN@.M
  318. M!&X#$C@H+%*J&QP0\*]@P-2!)8[(]&D_T:B(1)\="(N*'L@X!/C.?^!B 2)4M
  319. M,!X2?$4U5VU$AMDP!^O@'<R#L:&$[(EC(Z_HCB/P@WNP$3["2#@9>D_XT8+UM
  320. M#/'MC7+@!;>I!?A@/N440@%->,%(X4TB@T=)^NRWPO23)5EE>5_X71Y+/U=8M
  321. M:I9=%+#P!$2)1+ZD]55FX3GPA!G>%H[!PB1"?$KH6Y&XSB<-GLF3-N!:_41:M
  322. M S&N562%>%Z:(5X)B(=E[_VA:+411=4V+ ?>\*.(PW=H#M=A 7&'J?"1^)35M
  323. M-TC\X9,7B.NE\"3$UL$0"T]$G(H5<;"=#8V807)/Q.,M#>4WC92DV!%C7N"9M
  324. MB[L0;0A718=*.08ZH )4 ._=Q;BX.97BV4"!SQ C[L4HH#=5LCR&)&NK'\"6M
  325. MCTT$.#M?@9+.$*.=QLKR\LYBVL"+E?&\Q(<'\;?%-N$Y!M(/*_:U_>P0@^/,M
  326. M:R,U2"43/U6JKC(T>[R9-@@:)D%TX/@.GQ L+GFEH=1LO5@$? &;"6J>L3D>M
  327. MGNM8'/O><FPNYZ4@%IZ(<=>]4N'YB%U;+!8!Z!@=XMQAV8Y]P#M.GO%X%<]CM
  328. M /L%^#&YX4R_$V.U9,WTDOVQ#YA" AE $&0ZP% /\J5,R N98;YB80N4OX#!M
  329. M&\FRV/?:U83)D)6#"^9O4[@+ZV$=<(5+YAK^ L%AWYH; ;%XE1AD),H/N2.#M
  330. MY8K<A8!Q&Q#&0X$8&V..C(POQ4,^0Q28+\EC(9&(D[+&3<BES1=+Y+O\EO,RM
  331. M6_,N)2K=&![(<\?NBTVJ$U@LP0H$>,>6Q[%;)LMP63G8"@!Q\*2:RS)_52V2M
  332. MK#_&O)=])EZFP/]!L!7F8(0?")M1L&OTAAXZK3I!FHJ+X3D6')$O0^8*\0/KM
  333. M%GDYQH[Y(^=E(Z D-!>R:'L7Y^3AM!A,(ES5<O%7-; -X&:E_)@G;S-NS,Q9M
  334. M-U/@I>:74M8+0"0B5%XJQ<41B&_6.1$.4WA Q#?H+)N=,P@  K/HPR 07 L3M
  335. M^X6[Z,QCV3G/J6"R/5_ <O[*KC8$3)ST\2@1\EM>BR3D%7]DN:R2Z7(K]L7VM
  336. M<@U+GT?Q2J4HQDO(8GA[MA[AN: %Q!DVR2LYJE;HC<Q>-_2%+L-CF,/JYBA%M
  337. MF5*07AZ6'CH%N&,Q_*$S=(=-T2O:#*MHD\RB=6@"2*)E=@IL93DPASNQ5!X/M
  338. M*D XW"$83:-E=(P>PZ2-/$8H:[I+A72,.-*/\IO>:%B<D+< KIT#[A@<^]HNM
  339. M8"^GM(:&TM:A0V=I \U]O#25?LLB%*IV5KOJF?OR'KC/:Y@2*U)E*:<O]!6FM
  340. M)46S39-EL>QJ3=ROR,=J]2.'Y.^2V_J9GQX#<P I\^E".H )RBD*$.QT33=GM
  341. MW;N')#)Y1IU%. EKZDWM#)<PB;AL<Q@GTJ:M^Q#/:"4;HW_D*<-@3WQK0IJZM
  342. MF\,A^"BB3U.=13_F'-#*#-J?\9U6>ZB=LI[QT7D82(\!?[;B6 1J1#R]6E(6M
  343. M:UU]1159QT6VK9)81QP6T:'%)*U.9D5F6C/K!:."E:6AE=9M@E(RSAX-E;EPM
  344. ML"YM0E-]:B[2-BEC0UHLR2 Z2N]<:SVF\9B5NM;*4KC&!G!MK-&EE:.B]#-;M
  345. MMXEM?:M-< D^U4#6VB;6*^NN[]!]N0.^6@N7:SR\FZPHMS;8-=A8O $_>JLWM
  346. M-,$>H^I:8[]KMZAIAV[']-3CYMWN:%A]@N'BM>ZC[:4E/D2/_;+!\.L5DS3[M
  347. M8 L)F&UWO?6FI92V%_*BW>09(%0V@Y[#.AG7OFQ?*T+I+FPXESF[65<R*)=SM
  348. MW< K)M>K^D>C:WMWAUXUW['8!7MJOP=112FQ=E0^U^GS5W5M70.KH_;%%MO7M
  349. M 63'@/1#=^#FRO[: 4'4;D7I<-ET]-'698JT91O&FDUVH^K9?;GSLF_?;;BGM
  350. M2)6VSJ:G55M _UV.&W@I)4AE3S'@DR[;3OM5#6_)W:LH=Z"N7-EZN'/OO(RYM
  351. M)83-(67+.R^1\J^UVO0X3$J/GDM*)6X.K9$9"Y9-"DP5NS>OLQ4! +J$XNY[M
  352. MM[O+0.\6D[_;+BX@X4VE!Q[OGM>S>^0"[SL!Z-('\];=E\IX0^\MZ7-%P)MFM
  353. MLEAU>]-N,Y"FF;?H)MD/]5,4;;\M(%CVXX;9>[3U_MZA:VY1]F7;Q') 5-/9M
  354. M6?V^P6YIH\0J&&:C3_W41U?>!<[ TJ$8NV1\?$H+]XA\,2JX;U*.OXF?_RP$M
  355. M1Z,*&=)UO#A70BDEAO03*.""XT^U%[9WMI^EHB!<A&?1#-[!D34*3[(J/)D!M
  356. M<$4V2($VHE0!"YPS-7#:@ )P.$UFX#,:)R-?11K#\S3B*9=&J+^%</JA@OVHM
  357. MI]0!AR+7&87M@Y_AI ]7"OWX5L?DV=##<_@&&:3_./P$@3EP@15IN:R]FA?IM
  358. M;DD"+D(9<@G-IRL/]K+Q$?K&+6D<5^,Q<HZ;H3!M NZXELSCR+>/BH#=R\?IM
  359. M+I.$ V [@'.(XNN&:7CHI0WQ<AG#!@H,! ;J( [DEQHV1'*+3!O29S"FS]L,M
  360. M3FMR[J@B8,6CMM<5_(4O\;30Q+M0/S-X+7R4TX'TDL2'Q"JGI&AT'7[**,[?M
  361. MIO@*5M!XW/($<A&:0_.I'!_F';&.KX=C_B@$.2%WT+)\*DGR2][,)V^"GL2,M
  362. MO!+3\&IL2Z\Q--^.L_PM-^5M/$E)ZYL& 932%JO53>[CH'  ][5N%YT#V"M^M
  363. MCW7X%N?A]#R+@_&;#)"5KTX^X[R2G;_Q-_U#CS@IG\VXMD!R8P'AP0$VG57HM
  364. MDQ3<Z,\*/GK]!-L] V[W38M00NX6#7HXW]-M&8GO'52T2$<MWX84XS>;DVITM
  365. MW;^7= +0Q-D<6.^F3YF32YM^JC(L#WW2</^M M@X]7&MIA2G)X #'LH4^ ^WM
  366. MYQ%*?@[@GSZG/%Z&&@_'&O'D\YI\JV_P&B[=M#9QHW3\'<_/Y=*>NTS:[A9HM
  367. MR#TLZ:Y8/Y<$W-=B7-CM,\EB@+#'U46"8TU,"[1+4%;NU<<:-FSST=DNQRRCM
  368. MMD4_'?N DR\P)(*$58^J37W?<BH.&[1C;>3-ZEVHJ:]&-X!ABK=E$B#ZZ42WM
  369. M"$P.GR6U.@^FTT'D^O27NE<3;U<>#Z.[PV)U@3O$WHOS[ '4G*P/3[;.IC6TM
  370. MF)SCP5M95LJ(FI$+:UHTBYN#5T+:KUHTHV[1+93_$IA';]P.'.XB1]3MRY*WM
  371. M]Q\9H1B#,/*8B\(]WA)WTF;<:3%RUWJV?;DC<P)4O>-;OI;NB?&W2P&_Z!B)M
  372. M /HNI-H=CQ9WX(N^"27B\<E]^K8C\\*NG/,URWV\CGUHSTO^KMG3>O+LN](UM
  373. M! Q<,M!N$<7!A0,)5Z.W1>8]T\YWR.7<>'2T4U?C^BI->\KMDZE= S6?/4'8M
  374. M5V9:]*\,&TX*=A+/WS5W&A?OS7RC,^\]H!J3Q46_Q5UIQ%-2 I_7:T/4O:NTM
  375. MX<_N],W>S!GJYB:<7_6MVS(J ]3+:8</W=8VQ.?WZ*WD;1*3%P&PW;]+2T0IM
  376. M<JN\, JW$?;)*XS3?FW_=1D%X4/^#%5$H_K!D^R0]_+5Q:@>^4@+YYD\:1?SM
  377. MBO?#H_8A*ULW;YT'-UWHF2_+&F_1S1*.EZ ZOL0;]A[/L!EU&:6?/MW3+/5MM
  378. M3'UBN71=[<F3P,]EV:X\:3LSSNR9F._@;YE>A74 'UY*O/+'U_8IO\:1^?<NM
  379. MF6JWT&O=2,_1]?QUH)F(!R36OQ_8)J-C>&_U,7Z0SW@MNTX).)+,K,'8J7,JM
  380. M-&OK(:=]5^[ GI)*W#U.YOTKM ?DP=X8S7C@21:==>7F]BYQ/Q<(@AW!O[ULM
  381. M%;GBOO->:Y(;;4'WF+?U*/[2 WC<"]E%0+HG]XH,MJ_B=Z/N'_?-]?1157'_M
  382. M;<8MC86$EJ\-0GZ$U^RRVN8+?C*[]_@Z8=.=4)T3';Y1]=IZQN&S %&UHJ<9M
  383. M"LC<#+^B8]W2Z[VO;ZT'[2B@R_.W)0_H[_S)???G6Q^K^H9*B]<PNH?;+A\VM
  384. M0/FAF]H;.[WWM?E^TU/MULW6K[W#%^1N][QGH(2_LYU-((>EI'O>/W9?^YJ1M
  385. M6<S&O^LYDS-C+U[5[]!E(^H:&.I+UP7?X-]M?#>H);]\'_P^+R:'?,WFL),<M
  386. MU$=L.AS3)S:K=@.?4@$7B/@+2S[14PBH]SN;Z^^C_Q[2_/3E^C5<'YO7S[Y5M
  387. MZ0[^'OQ#WO OG:/^Q?-T-YWYM,&A.E3\WLGE/DR'PJ3^$^L OH_U\;/AEOH"M
  388. MO@L%.<3&$K&^9E_4\+Z@&_TY[@>&_=)7Y3[=D0MWAT[XB?Q"W?V/GLY&>DL_M
  389. MR1%_6OSZ0P$#+ZU('57)?L%U\&<_HU]?:G_H/SWR38N?WP[;_1^=]_=O[.F_M
  390. M?7] 2OR4#H4A_]1^DH4?;L>VR8_%J7KB!_+I6R#5AIY^_4.]$Z[[63M8?TKPM
  391. M7_J);!!%_8B;ZK>5D A[@O^5]75V)1O!%.]Y2Q-4VR>VE7SG7:PW\FE=:5^@M
  392. MU\'%?I): QB][73"WGGW5JU))T ? %#]4LK>D,#LQ7P,X(NW)7& U%^;] 'JM
  393. M2C/3"&C<Q58V7?TW]XUZVY_^9^I1)*@>F34=C#8NWLT&XTE[DIXMPKS==4N=M
  394. MQ12[J7QPG9VWX9U2TQ;,%^6]=ZX6IC<O_7GZ'M2V\EEY]9[.);YM2%O@E]<!M
  395. MEDPOX&<4 HZ B=U3=P).@9+:KQ<C_7D2UZLWZ(%$YI4$>-%)?S*>Y4?SL7U4M
  396. M7A@(BH@ 5MK:-QO8@22?E29"<6EZ8.=G V9_G%@..-/I -F74I 'E%5-%EE M
  397. M!3I4&N"6! >* $E?R<1+73;M',.3F;1_^%B=X_--?40;IR(>02X!CN+Q\$0(M
  398. MHIQJ!P":;EU(U5=\('\16"@3"W9RQI_7A]*!?4@:RO=OO1 !H APF. *N*#RM
  399. M]UXL9P+7 )AC="!P&LKG_!E<T5\%F,SE:ZJ1>>4&$GY8'O/6E71L2>"M%UUEM
  400. M@C$2!]A/>8.]$C@(V"F!XZ *6 X^@$42.JB!J(.4%COH8+F#W.##)@\B@>N@M
  401. M.'@/"H$KX /XA;QD1R ]R!:Q@]%5X%?^57PO6_K7]/E^,!OB9\1U4_3?HY 6M
  402. MM2<&(2'QV#""49@C6.IY8&. WI?2>5\I%&V0*G"$H=]4)A(R8&75XI=615<5M
  403. M8;^&$>Y; YAUL!&*>OC?V?8(@H0,6$DX&YR$."'HYQ&*?BRA9R4,SH+UGI2UM
  404. M9KB"#\8N.!M4@CY41-4') !?X"9(_4&%QUL?V 1*=!*7((B+G64E(%0G#FY5M
  405. M]-N0A?5 5.0@-VB,*4ND33+4\.5^4UM/AA;B@QR@"<"\M84."^XWS*5$)IQ!M
  406. M!E%14&, I+<7#GDO%? G']!/;YX?Z 1^6/+;-CC'W6YD5& H_.V%$]W\I@#.M
  407. M42CA4-BJ2317!E<GN)5JCUM_\5Z@8#].YZ7(M%IFF[G6]J1/:1'&MV D<F@4M
  408. MV;:&$1(9R+@6%&I_^=]JB!QQ3.E'G58TM0&DS6[(9H!IW]PVV ;4:WG,(N=]M
  409. M=6MD'G!H&8)XCI9=-P?PA*5AK#8:NFRA8<PV@J5@IZ$#EQ9RA_A3-PC="4QEM
  410. MH=$''C8Q(L Y.![&?N9A:=C$87E9WO#&'AJ'[B'[9.^5 7> /#CS?8?U87@XM
  411. M$*X(YAM]AWADAKGA#"8<JCN>879X'OYR454(T 9\4C.?MS10L6&]839GB=EKM
  412. M11*!J!-^A ,8 U8LE5C#H0\ P*%B&>)MV @6B*(?2+@2EH9Z&P=VJWD\SX6OM
  413. M8!I.8SK=J>; 38B*3#[EK(U.[-6..%3%@"UB4P:J\1V#'_\FM1E\WN'_=WNAM
  414. M@EK=Q$<DYD2:W;5VJ0V(JMJ&Z(4)3:YAX)8=RH9^5[A7R3QK&A=9I)^ B53BM
  415. M_2<4HHA364TW(B)?99N)V!&BB4!:&^!+U '*1X^G(:J&!N(-IB D?PA<::-!M
  416. MN J6&T[%GBB$# ]L.,*9 &OBH^ 0)C,W';!B;+T')L"?6*5\<RK>B[B0W4<SM
  417. M(EUV&G)8PN'#=@/FA'CBD2#,*8I\83+S<"6*,AS[YRJT$M,=:E)6E61UVH-(M
  418. M!4YB%:([1R+V '<BQ5;J,6#%(=C#Z\B)9D*=&!O4B@S/G!8<SHE<Q[$8+&8<M
  419. M=PBP2">F!<0AB.@K'8<BHH5X*^:*=]^G1!UZ7Q\B2X6Q4(NH8AY3(IJ)N*&5M
  420. M.)7QBO44B!CDB4G4(BO&(2"+T"*&1J:EB][BNAB]48NHV+NX+'(9/@ JYM^9M
  421. M:5,1NK-N" JC2-Z!)\0D;X O0B(PA1 /") 'D!L'@ID&+EJ+<!BVR/WI -MBM
  422. MG+$_36F:'^K4E &#^Q^C\9))6@]6C;9^U&CIA_T%AD1J_R%01!YYC((3R$B5M
  423. M]7.5C!E'':D'00Y/EB1^2:Q8-79"D5$!H8'6Q@EE/MO)9,.%4C6:CH@R]HMPM
  424. M6 IP[%5_\5H01S,Z)B'<--$8NEI1H])HI#&-EYC3."1]<SDCT]86*7=)E[LHM
  425. M L  PEMMV(NA8M;<6%?2H6PRXQ0RQI5Q*,"7 !XQ,3BCU;@S)DH]X^CT,VY>M
  426. M[F(7XL85C;?2T=B;)(T]XM*(BCV-:E74&,81"7-C\D?$68V0V)17-H)C$A?:M
  427. M^,CYBGU9)W>>\6.:W4FFB\UB3%G,R"<N+5880):3!6YZ%"EELR5*B^/7J.<9M
  428. MCE'C-^<X\G/AQ^H(5IUP9UZ2U;U] 99>6I@OMC?-!WP#:FR.CEX5U;W5-V,4M
  429. MYQ<9@G ^E[\X1WV,IV-0D#KFCD-<W7@SF@ YX^L8 L2.8M3LN(;5CAG([2C$M
  430. M#63=H[@&E+UBPF/3*'&Y-\Z'>0<V)F3U33J7W"4>:V/3.$<!@Q18,HC D8Q*M
  431. MHM!6#-)GX\<O6#V.8=%@EPC#5%EDXIZ8"[X7*D#ADQ9YBL"@VV5W15PH /^8M
  432. M G")(YA^$B8:1HK,QU7]S7E?U8109;%[B-?.QWCY?P!A'D=E#0DB5%?H,FU>M
  433. M)B0,V86D -L>QB+WV5F?$QL50UU/,P"R11ODB'<(#_E"44\'5)NU0 %.*!\-M
  434. MB7Q)7#+DWZC?*8J<8 [)4NV0@58/24 AD6[4$KE=S09$9$S3$IJ"^.!-1\=YM
  435. MA;4!%ODV85 ^Y!<E0\D 0N3T$T;&-F-D$SE%7@@BP%H(]\T&:N3S)#>UD4EDM
  436. M!T4#Q)$82QAI1 *2720<64=N>2WDJ(A'VH5H)&W01[*16Z07%4C*4(/D%ZG7M
  437. M53)IT2%92;)9'90B:13:D4.@Q!4?5G\ZI WH2:Y9/^0;50,0DK6!(9E%'I&6M
  438. M9!>928Z2C*3L%C0F,R( )/D[J5"\'P;GEIQE>0#P*.?1A2-<'DGA 9/!G\;7M
  439. MA0R3;4 QV<*1DEL2\?C>Q![3URH)0[F1U],@6<CM4KHDML=+GB+#PALG19:2M
  440. M74C) ;F8DRC4+@4TBI,B%/,X0]Z1(M1>)+SMD9/D&O5)MI(MP"W)3%91C:)"M
  441. MUL+]DR!<HZA-<I%*9!!I5-& ?&"T)T+!C\:C,N?2)0#AI#,I I"39P [^4Y:M
  442. ME.ID\61"M9,LST:)P<F3Y^0N64\Z1/>DE/86/I&NW$"Y4I**IV% Q?3QDL1?M
  443. M;2!!.FSXX=AP0#J2(M3T5?@LE&;-_?BB.8 KW.!XS]F4H0Q.";%5D!B<3[FTM
  444. M&%7.8U1U9 43#M^QURO*1DDE&K)4[I2-(AKU4Y954:5TY2/65B@ M@0BWI1:M
  445. MI4[Y0"99ZU],\QY\E2!$6$D;H)44)%?)4IZ-3F50 %MY=Y?;ET1#OI"471?RM
  446. MO<E8?^4).>'Q<4O2;0=8BE XY--UU4E];1+P5 P23W(?4I;9'7CK&!68^BE/M
  447. M=$ 8B93EB)CE?59T\1["XV)Y0UJ1495H9UH>7NY>GF?A-90NI&%YT[!$J"7AM
  448. MA>$95#5D8,E:1H&NY10(_]& 2AAL !*!@A!=?H0@!06YWC'D&)J69V00F/+=M
  449. MEI;':OFY\99DGI3W9Q67 H((Y2XM3T9>";*AD7Y^'X^VB3!ZV99?J5C*EH,EM
  450. M>Q4"%)8VY#7(V"%*N262Y /X4T' "6!)Q9=#$@_@3VD!T)6WV/!AEX">I[&CM
  451. MU90YS\K6^H670\!XZ0_6!BXA>/>B&9CJ%X)Y8^R1RZ5LV0D^CTD6@"E")7V:M
  452. MI+^$HY21S&5C26':BU64AGE#[@#;I4?980Z"$*8!F&!:"O8@2Z4-QG^L7FS9M
  453. M7G:%UL%_F7LX*1%=#$E@;C5_H2IG8N:60*5+\Q)ZBZ6EA<F\Z9CVT4(78&9YM
  454. M':8MEF2VER(FAODK-9D]9EN48OZ8><U<V$CFECZFLL1D&@D&4G89TQA57:;ZM
  455. M)F3NF&4FH$=DCI&YI&II6.Z6+U]OR?/Q>9V5T[1EB5?1)0/Y-1J.5F 7TBFHM
  456. M&O[C\H=#:GT#5>$3'9YT3F+&]SH&FB+ D.AH+DNQ()H47YI[(]*UUD!*/"@ M
  457. M$#A"<GG0)9CI*+9[U&6S9_K5F'UF>ZGM88,'5EH6X- RN(>?$2&@?"+7NC=JM
  458. MII!2X)V)\@E\[1O@9B@:?'02""%I+AA%XN-6*JE&P Y*IV55#S/F*;A9[EZ7M
  459. M&EEX&1J%/YGSIKUE?AD(N&==(%^;I@))PI5[QE8<B28MB-VFC[,<CI5]G7X%M
  460. MBSUNW)R&Y==)5^QE8%E%8H.JD>&AH/09:L;0T?3@!U[<<4D'1$?4)+>U1NJ3M
  461. MK"0W^48%D<2<,@<B;EX'92VI1 Z2"6<D.32%3^-3^70^98<@0 V 9D:&]-."M
  462. MF'KYD5IDP7E)7D]PY,;Y9QF4LR0BJ40>6QMC^TA%KH7S9"G92Z:-_B7OAW(.M
  463. MG%S4/FEPM@ WP)=E4P65DMA0&;TUG*"D#(5P=B&U7R%7<PZ=*:?..7*^41 GM
  464. M#J5P+ITL5-,I<G:1KV3$N4>"3WJ&/T<^%1T7YY&8S(  T=87>7*RE$0G/]ESM
  465. MMIQEY!.I3'Z4&Z49Z4LNG#8GVFEU;I-/9PO@'YF<O)_'B71RF5:FWYEV[IPEM
  466. MYR+986F:LN,>PQ.!$*TF*[AFU#AZAKD99RQI2E@[:'8AA6G7,/9J9B70H-:'M
  467. ML0"#?N+Q9T"NE1M8 F!I I9; $W@'WV1)&2&9UJJGKBFG;E"=E.6Y_]AS)V7M
  468. M,"0$6$U-2,X@=&'P@!!1%7 DG]!)9AJA*" 4FV*G<AAGM'*-8J28IYEIK2=NM
  469. M^7K* #A [%E=JFE:523&(JB+51<<0'I1@!)>!X@7J@IO )4E\<R8S68 &> -M
  470. MD)'&FL&7=)X(X!X(9'X*BJ<2IAIE'X[GT %=O$=S2'S$,-X:C*=R.?TXF\4@M
  471. M_FF>-![P$9KB\#2%GB?"UW?VAUG4X)EW%I[1%>B)PXF>%MA.N3&>G@RDZ@E+M
  472. MII:AYO19?;:6UV?M&6_&@3.>:K3Z31LA1DX$?+I:< #Q21O  8\C'>#/!6Z4M
  473. MXPL*&]"@/H#*.#)NC';5E$8(@I\FWP4($ITBYB<QH57-F ?9E!9]IIJZY719M
  474. M9Y:@/R>V*5L)GZ6A<%"M+7?,90O(2RF%^N>)DI$\&$?ADKA9&J !#MO#@,:?M
  475. MI]^26$2)'1\?!XD_EED?$[.7!JA9>*<;E3EM3J@DO"DF2:!=))Z53@Y@VYX0M
  476. MVJA-7F#/I! ?#6733R,E':@!/4 :0-JH ?,EY*0&^$Y2VKHX'@E/@*@2J09DM
  477. M3Q99EQ;UF:$!8"?:07VBUASV^8(>:L)!9^:$JI\_GROJ8I6A B0M* * H6*HM
  478. M+7,D.(7>4@IX>9*BMBBTV=E9> D3U46CN &-TU!P!HP!+ #Z=!A!!7; ZZB,M
  479. MLDO BG.IC-H!J:?HE&$U1\\1>W6-9J/9:&TU!-!*X!06ZGTY:0O@=W<H30?3M
  480. MZ%Z5N45W]IWV&=U)EK;H/)-!7!"TUHO!R8B6%PU]-UJN8>9HG)&/W7[C42V'M
  481. MC&9P#HW08Z@U:M.7+@?%(3- "15WWT%4%)FOM3.M 2@1KA413421@[R4S$%GM
  482. M\ASBT5>B ,/FG-8TK6$A0$#*>GQ2MN&OIAD*:^^:_;2NH4L-V[!8I(5HFDT-M
  483. M&JEY2ZRH*4?2B7W$Z-I1&2: ?5+]EJJ1BR>BN0BD<8;D7Z'X&;)TR:=V2!J>M
  484. MFS9BP)0:ZHI7HAVR0_@\O4_RHQ6@/DJ$NK)$*!$H04W ^]0^@(%9FOO,*Q6!M
  485. M1N"5<@; #V00JPP_'8? <A(0+&]I7KH8S 'A"EG$!1A#Y0$)0BR\ &>  L"7M
  486. M/J5_Z0L0F,(EA*EA^@) E,]';/0"2*:%*5\*F=8)&&6K0YDZII?I*T,6]:4NM
  487. M46-JF1:/S\=D6H*(IB] 9FJ:2@>-J5[JFKZFL&ELBA!LI6!.P2*;1@1@Z>LCM
  488. MEHH$9*E(, .P!/%*%.&LM 1K*4G0KMRF74%<VJ_,I0!+75K\F!''#W(JG48$M
  489. MA^DGIX4,8TI8=7J6@7*.SS'$EZ( ^ SQU 6H %P >!H&M !Z0!#0 F@!7P ,M
  490. MT +D 'S3>9J>KJ?MZ7LZGG(!3N-O0P?<IRI >+J?AC8O  K !61NJ&GZ\0*XM
  491. M *AI#S#:M#J<%6KZ*1VHJ.D7 "6D%%1 ,E29]D0B4D^$FGH!& L0QE*AIM./M
  492. MA]I-@:@=:KVXH=:+*.H+\!%=J%[ C::B;JAF6H<*,+*HM,%'E!DYIE[ %J">M
  493. M:@%=@(AJ AQ#+P"'6MJ0 *Z.A.0%C !%*E_:,OJG?)-^>I^"IU[ #G"?YJ?BM
  494. MJ0JP [P  ^H$F8=<J1*2'\.DJ@"]EW\JI3HL+X"7ZJ2"J2Q)>2JF=@'XZ0N@M
  495. M7"A/P-: "J3.6BZ "N#'U*D[P)=*I/*E>>J92J262G-J%%*G^C%D*J$* B@7M
  496. MJ.FLQ:1^J8AJ$W+B0"$M"!("D*$ <^H18J?R 'BJGDJF]JE5ZI_*I0)CI=REM
  497. M6JCR #T1HGJAPB"+ZIG:J XAC^H1<H4!J8YJ$?+N7&%P*NRVJ;X @*J1^J4:M
  498. M(ZEJE;H%R*<[ZA<0GZ*GP:I["I_VIV?J#D"DPCC3:;/JK,*F.T3MH#($ 2$#M
  499. ME?"L2@1P 0P0^^BFK,^ZTIO.!+//#!"<2A$TP5KJ$60%7>FU&A$HI_X*74I&M
  500. M/*<#2W2JKJJKPU"]6AH0%VK '%'][ 9XQ,>B_?01=XKW4RBT3.$/(F&9E3^,M
  501. M"OJCF4T2[,\ED;/D!YN$>.9)K!5 B_TCM-!FV!HJP6:,&*R$;_/_-"VR!-0RM
  502. M .$2ZT35@@#E)G>?Q,.U/$#)1 3$3(PMSX28($V<"=;$VK(!;1-OBP=T)^0)M
  503. M(!#=,LHH%"00HI"WL!,HT#!"*:Q ],2FX *=/8:+#)2XL JN JTB*S@N>@_0M
  504. MR@-9+@]%\[%A^&:<"Z-$01!!]DM'@029+N$"ZL($F11.4$K1NMQ!V$OH@"]4M
  505. M07/0%=2]W!0Y11?$NWQ!/H7%( 8)%<.++E0'I4')2U/Q,K1!B(7S @=-+W-0M
  506. M]1(TL*U>102C!XT5MDL?%+Y\"X(06^%6&$)C R(T5[0OQ<1=X03 #?$+7P$)M
  507. M 1:BRR2DOT05_$OAD DI (Y%)R19%#"AT&4Q"FT.I=!G@0H],*K0Z< *'0$5M
  508. MS"NT6L1"',QKX<'80G8K+B0\X!:ZA5S46Z@POX6]ZKRZ!GKIZ(./YA?SJEN0M
  509. MK6ZK=$&W.I:^/B+!1V #G*5_@7!J$Z@^NH\-(*ZFJ]5K0\"N,J=<P1AQ&<"KM
  510. M=ZF\FKXVJ\O/\_J\0C\72S>UKU($'HL>,1QL/R.+P"H=$*Q/C<%*_BPJ($?,M
  511. MDO[0+)1$?=#^/*SPCUCC27 _8T/%>I!("$-+QFJT;*Q(2Y#RL:YF(NN,0  MM
  512. M"K#! =1+H*Q:6P-D3'@M+>LR(;8X$TR)V3*S4A,8T#6!:MRLC4<'1")\0.'$M
  513. M(O*S[D""1 E$PC8*12M.LHG,$RU0"\.TQD#^Q RDN$2MC N.QCU4K4!LY4(BM
  514. M7"Y:*[\1!/T9%"S8*@F1+MP"V;H$F0MH*TJA4C"N4]#;&E/$K0'#W*H%,0IUM
  515. MJ^]PM_HN81#&P+<2%<3+SX &*16!Z_("512N;U!@% ?-+HJK'30TX$&.:UBQM
  516. M!T6N9L4?A%:0+XR"Y5H(P16:*_O2NKPOGVM>$3D\0O0+Z6H$\0V4T-^POR@6M
  517. M_LLF5!^XKI\0P!"[8@Z:Q0)C"H$.MZNW ,'HKA,,[^H*73"JQ<N@P< &P6LMM
  518. MQ#L4KR),+D3")*_7W?+Z/=BO]FHQ= QE:IQ:,Q0-34-%@ ]1PQQ-UU SN\SRM
  519. M)391M9-KN C3 B>YQP!H\@5LD,V:)=LL&M#-TF5/J0K@R%5_*M@$F5/N15O M
  520. MB;!P''TIP'U%!?Y9K9SN5_/!!G[ . M@E+/GK+U6_;6,#$T(N<]"'X(3(I;.M
  521. MKK-J%4&K@O%*[:Q2B13%L[#$/.O(V;,1%3Z+1NFS#-M".XTQ9+*6",8L65L/M
  522. M;1L8H9!W9$B!$,Z.8 ^M Q9'9"7^[+  T-9TW^RS^"NLM#'M&3#3PF'I+ 'WM
  523. M25V([BS$!L_*L[:<3XO1WG[-Y(7H]!5YE6,_RYB0LV2"\M T#K0BX]-R(5:.M
  524. M31DAUM,^?50M&,+0>) 9"% KT0ZU%6U1^_0=M20F_:340H17XU9[B8&TVN%(M
  525. M.W1=M29M!4&]I;1DP$J+/EVU+JV<DI6 GAF$34M"Y+0 K3^W= BVBPF<\<]&M
  526. MM34=V07.(AX5I%LK[4FE<-&09X&":*?42HNQ$+91K3]'S[X'G"TWFY,YDH/4M
  527. M>[ ^L6B8;<GD+?D!%:1J"]D>D*5-O ;7RK4$TVG+[]!,(IYTL'"< 2Z".6?KM
  528. MH0"V+4^F) 6WZ<=NV]M:!\J%O9,J7$S>4E/F@ZX(D5I3-H7<H-KCW8@<F0!CM
  529. ME'0+D$6.R(+-:-VJ!]FMX'0^_G/;8WBK.JF.V2/Z%+^)1<K;BK#26J#![=0$M
  530. M&?$E5^G=!QGYM9&GQ7BN!;8!R&#[U"ZVW*QA.U%.:0!:8EN6 +CF;&-;T_:WM
  531. M*RV!1]/F-#P@UU$QK$SO0238[; .I2%6(WXQ8/27.SG]@)<#DH;[?H&XH,A$M
  532. MV4WQ?^&EB/O]W5\I[H";,:H2H.T MB)RBWU FXB4OHE*J74HL]6 ,1YE"T**M
  533. M;2F4FD@Q]KCZ[6J(V0IU0QUL.]4Q<$AN.MO;47>9;705VIJSGJTC!]K^MS(MM
  534. M8PN'^;0=[H7(A@VY"Y5I&Z^EMETNU_=_4'Y:G&G[Y#X%*,":6XFYMOQLD?M@M
  535. M^+;>DISKA<FV#%/)-%#%MQE@"6+<H@&^[808W-J$!:T85MP.";PMH(O<7@>+M
  536. MUJTGJ35EX6)-IV^53&)MB_ %0$N4DI!K*TZUM&V?1-?6N(B'=AM^8&%58JC8M
  537. MJJEAL$%3YN;JN".8FWM*M4E?@)N;%KFZF*YG)JO!1:NNGDO2NKFUKEU;@$ EM
  538. M*ZV=VZK%MXA'3<?7.I#*8 (WDY&"G,E==NL:1K%NJR@'R+<4!'YK>[!O/%JIM
  539. MBY7>&OQMC&+@:K.=K3=;00BV..WB)K'!B:QNC?@08KOUK=:FSHIA.]Q?E2I,M
  540. MN0'M9UOHFF&I+3R*>+"[VF[*^N[*:-'=G@NBU;HH+;"[[YJ[<T!*Z 908,0NM
  541. MJ/O2YK?]KM;6[;)%]*X_E]2-NPQNF7CNYK@>[4/8[J)M1R[=Q?+8:KB:&V:,M
  542. M3$D@1,4[C5FY]ZZ;!^]:*2G4^A0<97.*E*ABVGIH-N]$>=IZ?#EOS'O7[6@SM
  543. MH=L&J$EJ?L#'6['!N3_=RL3P/ %F /ZF2,VVMI[,*Z?AMI_BF:B4_F\J'>WTM
  544. M20F[<2*OQ#@)AS,O%*:D7;?K@>[$.V&BPF&[6*.E>M86&W8U0KHT+ZE[XRJ\M
  545. M6*_8^^J&M7):6B2G7;IAK1L0]A:+:='?RYD,MW+:H3LL'+>-;FK7W I.=1N_M
  546. MF_$9O3.8Q_;3;FA!+7F \"J\&]*.]@4@AU9*R2L'7(U<;]U;+*( 4.^>._5*M
  547. M:I#OG<NBE;XD[< KJ3F^&Z^I"Z2E: $O2;NAU;JIKG@[J=9>CA2_1_KFN;7OM
  548. M7)ON4;U-6;K7.-U[E&ZZY\Y.,Y=N75OPI@_!KIM(]ZH @N\&4==)!U(OS7O]M
  549. M,C0_+X.V_>Z\Z8.-&_MNNT :L2O.7KXO*8ET^[JT.P%M"NKT!?-K09";9J]8M
  550. M!&_*O9X$-("Q-:X.I[Q/%9'_'J?QKT.PO@H_S>F[RA48/RB!;1H (Z<O@%&6M
  551. M$RVKCFF=VL]P 7Z FKJCRJ?&JK!*GJ8 7T"=&JX(!*G"%3 4X)MGP$GHROPEM
  552. M^T6D8?!(/%EJ 1C^51?>Z8%*_7X!:JH7< &CIQDPWW0#ZP$Y\ ;< 1M#2L^[M
  553. M, (#&*D"3"('R"2_"(,FC/PV]HZ]L:!Y"9!+D@../!<Q<#\CZ=2IQD<Z=G=\M
  554. MP&I "#P$#PN,UKJQ@J8*0.I3-#]0%\.$/U$@)*D-\$?SH#JF'PVE*B%1JGSIM
  555. @GUH%OP L0&NZ ._!?' ?[ ?_P8!P("P(#\*$<"$\OP+S
  556.  
  557. end
  558.